/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Boundaries.InternalFrame_Kendaraan;
import Connection.Koneksi;
import Entities.Kendaraan;
import Entities.Servis;
import Entities.Sewa;
import Entities.Sewa;
import TableModel.Kendaraan_List;
import TableModel.Kendaraan_List_TableModel;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Tea-Nose
 */
public class Add_Controller {

    /**
     * pindahkan fungsi tambah kendaraan ke kelas entity
     */
    private static Add_Controller add_Controller;
    private Connection connection = null;
    public static final int UNIQUE_CONSTRAINT_VIOLATION = 1;

    public Add_Controller() {
    }

    public Add_Controller(Connection connection) {
        this.connection = connection;
    }

    public static Add_Controller getAdd_Controller() {
        if (add_Controller == null) {
            add_Controller = new Add_Controller(Koneksi.getConnection());
        }
        return add_Controller;
    }

    public void addKendaraan(javax.swing.JInternalFrame frame) {
        InternalFrame_Kendaraan formAdd = (InternalFrame_Kendaraan) frame;
        if (formAdd.tf_Kendaraan_NoPolisi.getText().matches("")
                || formAdd.tf_Kendaraan_WarnaKendaraan.getText().matches("")
                || formAdd.ta_Kendaraan_SpesifikasiKendaraan.getText().matches("")) {
            JOptionPane.showMessageDialog(null, "Error\nTerdapat field yang belum terisi");
        } else {
            try {
                Kendaraan kendaraan = new Kendaraan();
                kendaraan.setNo_polisi(formAdd.tf_Kendaraan_NoPolisi.getText());
                kendaraan.setMerk_kendaraan(formAdd.tf_Kendaraan_MerkKend.getText());
                kendaraan.setTipe_kendaraan(formAdd.comboBox_Kendaraan_TipeKendaraan.getSelectedItem().toString());
                kendaraan.setWarna_kendaraan(formAdd.tf_Kendaraan_WarnaKendaraan.getText());
                kendaraan.setSpesifikasi_kendaraan(formAdd.ta_Kendaraan_SpesifikasiKendaraan.getText());
                kendaraan.setStatus_kendaraan("siap sewa");
                kendaraan.setHarga_Sewa_Per_Hari(Double.parseDouble(formAdd.tf_harga_sewa_per_hari.getText()));

                String checker = kendaraan.getMerkKendaraan(formAdd.tf_Kendaraan_NoPolisi.getText()).toString();

                kendaraan.insertNewKendaraan();

                formAdd.tf_Kendaraan_NoPolisi.setText("");
                formAdd.tf_Kendaraan_MerkKend.setText("");
                formAdd.tf_Kendaraan_WarnaKendaraan.setText("");
                formAdd.tf_harga_sewa_per_hari.setText("");
                formAdd.ta_Kendaraan_SpesifikasiKendaraan.setText("");
                JOptionPane.showMessageDialog(null, "Data kendaraan berhasil ditambahkan...");

                List<Kendaraan> kendaraans = Kendaraan_List.getKendaraanList().getAllKendaraan();
                Kendaraan_List_TableModel kendaraan_table = new Kendaraan_List_TableModel(kendaraans);
                formAdd.jTable1.setModel(kendaraan_table);

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "Masukkan harga sewa per hari haruslah berupa karakter angka");
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, ex.getErrorCode());
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }
        }
    }

//    public void addServis(Servis servis) {
//        try {
//
//            String query = "INSERT INTO SERVIS(kode_servis,biaya_servis,tanggal_servis,status_oli) VALUES('" + servis.getKode_servis() + "','" + servis.getBiaya_servis() + "','" + servis.getTanggal_servis() + "','" + servis.getStatus_oli() + "')";
//            Koneksi.execute(query);
//        } catch (SQLException ex) {
//            Logger.getLogger(Add_Controller.class.getName()).log(Level.SEVERE, null, ex);
//        }
//
//    }

//    public void addSewa(Sewa sewa) {
//
//        try {
//
//            String query = "INSERT INTO SEWA(no_faktur,nama_penyewa,alamat_penyewa,no_telp_penyewa,tanggal_sewa,uang_sewa,tanggal_kembali,denda) VALUES('"
//                    + sewa.getNo_faktur() + "','" + sewa.getNama_penyewa() + "','" + sewa.getAlamat_penyewa() + "','" + sewa.getNo_telp_penyewa() + "','"
//                    + sewa.getTanggal_sewa() + "','" + sewa.getUang_sewa() + "','" + sewa.getTanggal_kembali() + "','null')";
//            Koneksi.execute(query);
//        } catch (SQLException ex) {
//            Logger.getLogger(Add_Controller.class.getName()).log(Level.SEVERE, null, ex);
//        }
//
//    }

    public void reset(javax.swing.JInternalFrame frame) {
        InternalFrame_Kendaraan formAdd = (InternalFrame_Kendaraan) frame;
        formAdd.tf_Kendaraan_NoPolisi.setText("");
        formAdd.tf_Kendaraan_MerkKend.setText("");
        formAdd.tf_Kendaraan_WarnaKendaraan.setText("");
        formAdd.tf_harga_sewa_per_hari.setText("");
        formAdd.ta_Kendaraan_SpesifikasiKendaraan.setText("");
    }
}
